package models.common.entity;

import java.util.Date;

import javax.persistence.Entity;
import javax.persistence.Transient;

import org.apache.commons.lang.StringUtils;

import play.db.jpa.Model;

import common.constants.ConfConst;
import common.constants.Constants;
import common.enums.AuditStatus;
import common.enums.CertificateType;
import common.enums.Client;
import common.enums.IsBlackCompany;
import common.enums.IsCaCertificatePass;
import common.enums.MemberType;
import common.utils.Security;

/**
 * 企业信息表(副表)
 *  
 * @description 
 *
 * @author zhiliang.lan
 * @createDate 2017年6月22日09:24:03
 */
@Entity
public class t_company_info_side extends Model {

	
	/** 用户ID(取t_user表的ID) */
	public long user_id;

	/** 企业logo  */
	public String logo;
	
    /** 企业全称 */
    public String full_name;

    /** 企业简称 */
    public String short_name;
    
    /** 时间（取user表的时间） */
    public Date time;
    
    
    /** 注册入口：1 pc 2 app 3 wechat */
	private int client;
	public Client getClient() {
		Client client = Client.getEnum(this.client);
		return client;
	}

	public void setClient(Client client) {
		this.client = client.code;
	}
    
    /** 成为投资会员时间 */
    public Date invest_member_time;

    /** 营业执照编号 */
    public String business_license_code;
    
    /** 营业执照图片 */
    public String business_license_code_pic;

    /** 经办人姓名 */
    public String agent_name;

    /** 经办人手机号码 */
    public String agent_mobile;

    /** 经办人固定电话 */
    public String agent_tel;

    /** 证件类型 0:身份证 1：户口簿 2：暂住证 3：居住证明 */
    public int certificate_type;
    
    public CertificateType getCertificate_type(){
    	CertificateType certificateType = CertificateType.getEnum(this.certificate_type);
		return certificateType;
	}
	
	public void setCertificate_type(CertificateType certificateType){
		this.certificate_type = certificateType.code;
	}

	/** 经办人证件号码  */
	public String agent_card_number;

	/** 经办人证件正面  */
	public String agent_card_on;
	
	/** 经办人证件背面  */
	public String agent_card_under;
	
    /** 经办人居住地址 */
    public String agent_address;

    /** 企业法定代表人授权委托书图片 */
    public String company_legal_person_proxy_pic;
    
    /** 企业经办人（代理人）授权委托书图片 */
    public String company_agent_person_proxy_pic;

    /** 经办人邮箱 */
    public String agent_email;
    
    /** 经办人银行卡号 */
    public String agent_account;
    
    /** 经办人银行卡预留手机号*/
    public String agent_back_mobile;
    
    /** 法人银行卡号 */
    public String legal_account;
    
    /** 法人银行卡预留手机号*/
    public String legal_back_mobile;
    
    
    /** 企业营业执照的图片 */
    public String company_license_pic;

    /** 企业常用办公地址 */
    public String company_work_address;

    /** 企业开户许可证 */
    public String company_license_permit;

    /** 机构信用代码证或贷款卡 */
    public String company_credit_card;

    /** 法定代表人姓名 */
    public String legal_person_name;

    /** 法人代表证件号 */
    public String license_code;
    
    /** 法人代表 证件类型 */
    private int license_card_type;
    
    public CertificateType getLicense_card_type(){
    	CertificateType certificateType = CertificateType.getEnum(this.license_card_type);
		return certificateType;
	}
	
	public void setLicense_card_type(CertificateType certificateType){
		this.license_card_type = certificateType.code;
	}
    

    /** 证件的正面 */
    public String license_card_pic_on;
    
    /**小额金额随机金额*/
    public double small_amount;

    /** 证件的背面 */
    public String license_card_pic_under;

    /** 法定代表人手机号码 */
    public String legal_person_mobile;

    /** 法定代表人固话 */
    public String legal_person_tel;

    /** 法定代表人居住地址 */
    public String legal_person_address;

    /** 法定代表人邮箱 */
    public String legal_person_email;

    /** 省id */
    public Long province_id;

    /** 市id */
    public Long city_id;

    /** 电子签章认证是否通过 0 默认未通过 1 通过 */
    private int ca_authentication_status;
    
    public IsCaCertificatePass getCa_authentication_status(){
    	IsCaCertificatePass isCaCertificatePass = IsCaCertificatePass.getEnum(this.ca_authentication_status);
		return isCaCertificatePass;
	}
	
	public void setCa_authentication_status(IsCaCertificatePass isCaCertificatePass){
		this.ca_authentication_status = isCaCertificatePass.code;
	}

    /** 信用积分 */
    public int credit_point;

    /** 交易信用积分 */
    public long credit_level_id;
    
    @Transient
	public t_credit_level creditLevel;
	public t_credit_level getCreditLevel () {
		if (this.creditLevel == null) {
			this.creditLevel = t_credit_level.findById(credit_level_id);
		}
		return this.creditLevel;
	}

    /** 企业用户类型*/
    public long company_type_id;
    
    /** 行业类型*/
    public long industry_type_id;
    
    /** 加入黑名单理由 (原因) */
    public String black_reason;
    
    /** 是否黑名单 0否 1是 */
    private int is_black;
    
    public IsBlackCompany getIs_black(){
    	IsBlackCompany isBlackCompany = IsBlackCompany.getEnum(this.is_black);
		return isBlackCompany;
	}
	
	public void setIs_black(IsBlackCompany isBlackCompany){
		this.is_black = isBlackCompany.code;
	}

    /** 企业的对公账号 */
    public String open_account;

    /** 对公银行 */
    public String open_bank;
    
    /**
	 * 企业认证状态 默认 0 未认证 1认证通过 2认证不通过 3 待审核
	 */
	public int company_authenticate_status;
    
	/**
	 * 基本信息审核状态 默认 0 未提交  1未审核 2审核通过 3审核不通过  
	 */
	private int basic_info_audit_status;
	
	/**
	 * 小额金额鉴定审核状态 默认  0 未提交  1未审核 2审核通过 3审核不通过 
	 */
	private int authenticate_status;
	
	/**
	 * 修改邮箱号码上传的单位授权证书路径
	 */
	public String email_authorization_certificate_pic;
	
	/**
	 * 邮箱修改审核状态；0，未审核，1不通过；2，通过
	 */
	public int update_email_status;
	
	/**
	 * 基本资料审核信用积分
	 */
	public int basic_info_score;
	
  
	/**小额金额鉴定凭证路径*/
	public String small_amount_pic; 
	
	/**经办人信息修改审核状态；0，未申请，1待审核；2，通过，3.不通过*/
	public int agent_status;
	
	//基本资料状态get和set方法
	public AuditStatus getBasic_info_audit_status(){
		AuditStatus auditStatus = AuditStatus.getEnum(this.basic_info_audit_status);
		return auditStatus;
	}
	
	public void setBasic_info_audit_status(AuditStatus auditStatus){
		this.basic_info_audit_status = auditStatus.code;
	}
	
	
	//评估资料状态get和set方法
	public AuditStatus getAuthenticate_status(){
		AuditStatus auditStatus = AuditStatus.getEnum(this.authenticate_status);
		return auditStatus;
	}
	
	public void setAuthenticate_status(AuditStatus auditStatus){
		this.authenticate_status = auditStatus.code;
	}
    
	private int member_type;
	/**会员类型 (枚举)：-1-全部会员  0-新会员；1-投资会员；2-融通会员；3-复合会员（投资&融通）*/
	public MemberType getMember_type() {
		MemberType memberType = MemberType.getEnum(this.member_type);
		return memberType;
	}

	public void setMember_type(MemberType memberType) {
		this.member_type = memberType.code;
	}
	
	/**加密ID*/
	@Transient
	public String sign;
	
	public String getSign() {
		return Security.addSign(this.user_id, Constants.BID_ID_SIGN, ConfConst.ENCRYPTION_KEY_DES);
	}
	/**加密ID*/
	@Transient
	public String signId;
	
	public String getSignId() {
		return Security.addSign(this.id, Constants.BID_ID_SIGN, ConfConst.ENCRYPTION_KEY_DES);
	}
	

	@Transient
	public String address;
	public String getAddress() {
		if(StringUtils.isBlank(agent_address)){
			return agent_address;
		}
		if(agent_address.length() > 16){
			return agent_address.substring(0, 14)+"...";
		}
		return agent_address;
	}
	@Transient
	public String legalAddress;
	public String getLegalAddress() {
		if(StringUtils.isBlank(legal_person_address)){
			return legal_person_address;
		}
		if(legal_person_address.length() > 12){
			return legal_person_address.substring(0, 12)+"...";
		}
		return legal_person_address;
	}
	
	@Transient
	public String workAddress;
	public String getWorkAddress(){
		String adress = "";
		if(StringUtils.isNotBlank(company_work_address) && company_work_address.length() > 15){
			adress = company_work_address.substring(0, 15)+".....";
		}else{
			adress = company_work_address;
		}
		return adress;
				
	}
}